package main

import "fmt"

var g ="全局变量"

func getUserInfo()(string,int){
	return "zhangsan",10
}

func main() {
	fmt.Println("声明变量")
	// var username string
	// fmt.Println(username)  //变量声明后没有初始化的话值为空

	// var a1="张三"
	// fmt.Println(a1)

	// go语言中变量名和关键字都不能做变量名
	// 第一种初始化变量的方式
// 	var  username string
// 	username="张三"
// 	fmt.Println(username)
// 	// 第二种初始化变量的方式
// 	var username1 string ="张三"
// 	fmt.Printf(username1)

// // 3
// 	var username2="张三"
// 	fmt.Println(username2)

// 一次声明多个变量
// var 变量名称,变量名称 类型
// var (
	// 变量名称  类型
	// 变量名称  类型
// )
// var a1,a2 string
// a1 ="aaa"
// a2="aaaaaaa"
// fmt.Println(a1,a2)
// 如何声明类型不一致的变量
// 先定义后赋值
// var (
// 	username string
// 	age   int
// 	sex  string
// )
// username="张三"
// age =20
// sex ="男"
// fmt.Println(username,age,sex)
// 定义的时候赋值
// var (
// 	username string ="张三"
// 	age  int =20
// )
// fmt.Print(username,age)
// 短变量声明法 不能用于全局变量声明
// var username = "张三"
	// username :="张三"
	// fmt.Println(username)
	// fmt.Printf("类型:%T",username)
	// 使用短变量一次声明多个变量
	// a,b,c :=12,13,"C"
	// fmt.Println(a,b,c)
	// fmt.Printf("a类型是：%T b类型是 %T，C类型是 %T",a,b,c)
	// 匿名变量
	// 在使用多重赋值时，要想忽略某个值 可以使用匿名变量 anonymous variable
	// 匿名变量用一个下划线表示_ 例如 
	// 匿名变量不占用命名空间 不会分配内存，所以匿名变量之间不存在重复声明
	// var username,age = getUserInfo()
	// fmt.Print(username,age)
	// 使用匿名变量忽略int的值
	var username,_ = getUserInfo()
	fmt.Print(username,"\n")
	var _,age= getUserInfo()
	fmt.Print(age)

}